00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef ESST1A_HPP
00011 #define ESST1A_HPP
00012 #include "gridpack/component/data_collection.hpp"
00013 #include "gridpack/parser/dictionary.hpp"
00014 #include "gridpack/utilities/string_utils.hpp"
00015 namespace gridpack {
00016 namespace parser {
00017 template <class _data_struct> class Esst1aParser
00018 {
00019 public:
00020
00021
00022
00023 explicit Esst1aParser()
00024 {
00025 }
00026
00027
00028
00029
00030 virtual ~Esst1aParser()
00031 {
00032 }
00033
00034
00035
00036
00037
00038
00039
00040 void extract(_data_struct &data_struct,
00041 gridpack::component::DataCollection *data, int g_id)
00042 {
00043 double rval;
00044 bool bval;
00045
00046 if (!data->getValue(HAS_EXCITER,&bval,g_id)) {
00047 data->addValue(HAS_EXCITER, true, g_id);
00048 } else {
00049 data->setValue(HAS_EXCITER, true, g_id);
00050 }
00051
00052
00053 std::string stmp;
00054 if (!data->getValue(EXCITER_MODEL, &stmp, g_id)) {
00055 data->addValue(EXCITER_MODEL, data_struct.model, g_id);
00056 } else {
00057 data->setValue(EXCITER_MODEL, data_struct.model, g_id);
00058 }
00059
00060
00061 if (!data->getValue(EXCITER_UEL,&rval,g_id)) {
00062 data->addValue(EXCITER_UEL, data_struct.uel, g_id);
00063 } else {
00064 data->setValue(EXCITER_UEL, data_struct.uel, g_id);
00065 }
00066
00067
00068 if (!data->getValue(EXCITER_VOS,&rval,g_id)) {
00069 data->addValue(EXCITER_VOS, data_struct.vos, g_id);
00070 } else {
00071 data->setValue(EXCITER_VOS, data_struct.vos, g_id);
00072 }
00073
00074
00075 if (!data->getValue(EXCITER_TR,&rval,g_id)) {
00076 data->addValue(EXCITER_TR, data_struct.ex_tr, g_id);
00077 } else {
00078 data->setValue(EXCITER_TR, data_struct.ex_tr, g_id);
00079 }
00080
00081
00082 if (!data->getValue(EXCITER_VIMAX,&rval,g_id)) {
00083 data->addValue(EXCITER_VIMAX, data_struct.vimax, g_id);
00084 } else {
00085 data->setValue(EXCITER_VIMAX, data_struct.vimax, g_id);
00086 }
00087
00088
00089 if (!data->getValue(EXCITER_VIMIN,&rval,g_id)) {
00090 data->addValue(EXCITER_VIMIN, data_struct.vimin, g_id);
00091 } else {
00092 data->setValue(EXCITER_VIMIN, data_struct.vimin, g_id);
00093 }
00094
00095
00096 if (!data->getValue(EXCITER_TC,&rval,g_id)) {
00097 data->addValue(EXCITER_TC, data_struct.ex_tc, g_id);
00098 } else {
00099 data->setValue(EXCITER_TC, data_struct.ex_tc, g_id);
00100 }
00101
00102
00103 if (!data->getValue(EXCITER_TB,&rval,g_id)) {
00104 data->addValue(EXCITER_TB, data_struct.ex_tb, g_id);
00105 } else {
00106 data->setValue(EXCITER_TB, data_struct.ex_tb, g_id);
00107 }
00108
00109
00110 if (!data->getValue(EXCITER_TC1,&rval,g_id)) {
00111 data->addValue(EXCITER_TC1, data_struct.tc1, g_id);
00112 } else {
00113 data->setValue(EXCITER_TC1, data_struct.tc1, g_id);
00114 }
00115
00116
00117 if (!data->getValue(EXCITER_TB1,&rval,g_id)) {
00118 data->addValue(EXCITER_TB1, data_struct.tb1, g_id);
00119 } else {
00120 data->setValue(EXCITER_TB1, data_struct.tb1, g_id);
00121 }
00122
00123
00124 if (!data->getValue(EXCITER_KA,&rval,g_id)) {
00125 data->addValue(EXCITER_KA, data_struct.ex_ka, g_id);
00126 } else {
00127 data->setValue(EXCITER_KA, data_struct.ex_ka, g_id);
00128 }
00129
00130
00131 if (!data->getValue(EXCITER_TA,&rval,g_id)) {
00132 data->addValue(EXCITER_TA, data_struct.ex_ta, g_id);
00133 } else {
00134 data->setValue(EXCITER_TA, data_struct.ex_ta, g_id);
00135 }
00136
00137
00138 if (!data->getValue(EXCITER_VAMAX,&rval,g_id)) {
00139 data->addValue(EXCITER_VAMAX, data_struct.vamax, g_id);
00140 } else {
00141 data->setValue(EXCITER_VAMAX, data_struct.vamax, g_id);
00142 }
00143
00144
00145 if (!data->getValue(EXCITER_VAMIN,&rval,g_id)) {
00146 data->addValue(EXCITER_VAMIN, data_struct.vamin, g_id);
00147 } else {
00148 data->setValue(EXCITER_VAMIN, data_struct.vamin, g_id);
00149 }
00150
00151
00152 if (!data->getValue(EXCITER_VRMAX,&rval,g_id)) {
00153 data->addValue(EXCITER_VRMAX, data_struct.vrmax, g_id);
00154 } else {
00155 data->setValue(EXCITER_VRMAX, data_struct.vrmax, g_id);
00156 }
00157
00158
00159 if (!data->getValue(EXCITER_VRMIN,&rval,g_id)) {
00160 data->addValue(EXCITER_VRMIN, data_struct.vrmin, g_id);
00161 } else {
00162 data->setValue(EXCITER_VRMIN, data_struct.vrmin, g_id);
00163 }
00164
00165
00166 if (!data->getValue(EXCITER_KC,&rval,g_id)) {
00167 data->addValue(EXCITER_KC, data_struct.ex_kc, g_id);
00168 } else {
00169 data->setValue(EXCITER_KC, data_struct.ex_kc, g_id);
00170 }
00171
00172
00173 if (!data->getValue(EXCITER_KF,&rval,g_id)) {
00174 data->addValue(EXCITER_KF, data_struct.ex_kf, g_id);
00175 } else {
00176 data->setValue(EXCITER_KF, data_struct.ex_kf, g_id);
00177 }
00178
00179
00180 if (!data->getValue(EXCITER_KLR,&rval,g_id)) {
00181 data->addValue(EXCITER_KLR, data_struct.klr, g_id);
00182 } else {
00183 data->setValue(EXCITER_KLR, data_struct.klr, g_id);
00184 }
00185
00186
00187 if (!data->getValue(EXCITER_ILR,&rval,g_id)) {
00188 data->addValue(EXCITER_ILR, data_struct.ilr, g_id);
00189 } else {
00190 data->setValue(EXCITER_ILR, data_struct.ilr, g_id);
00191 }
00192
00193
00194 if (!data->getValue(EXCITER_TF,&rval,g_id)) {
00195 data->addValue(EXCITER_TF, data_struct.ex_tf, g_id);
00196 } else {
00197 data->setValue(EXCITER_TF, data_struct.ex_tf, g_id);
00198 }
00199 }
00200
00201
00202
00203
00204
00205
00206
00207 void parse(std::vector<std::string> &split_line,
00208 gridpack::component::DataCollection *data,
00209 int g_id)
00210 {
00211 double rval;
00212 bool bval;
00213 int nstr = split_line.size();
00214
00215 if (!data->getValue(HAS_EXCITER,&bval,g_id)) {
00216 data->addValue(HAS_EXCITER, true, g_id);
00217 } else {
00218 data->setValue(HAS_EXCITER, true, g_id);
00219 }
00220
00221
00222 std::string stmp, model;
00223 gridpack::utility::StringUtils util;
00224 model = util.trimQuotes(split_line[1]);
00225 util.toUpper(model);
00226 if (!data->getValue(EXCITER_MODEL,&stmp,g_id)) {
00227 data->addValue(EXCITER_MODEL, model.c_str(), g_id);
00228 } else {
00229 data->setValue(EXCITER_MODEL, model.c_str(), g_id);
00230 }
00231
00232
00233 if (nstr > 3) {
00234 if (!data->getValue(EXCITER_UEL,&rval,g_id)) {
00235 data->addValue(EXCITER_UEL,
00236 atof(split_line[3].c_str()), g_id);
00237 } else {
00238 data->setValue(EXCITER_UEL,
00239 atof(split_line[3].c_str()), g_id);
00240 }
00241 }
00242
00243
00244 if (nstr > 4) {
00245 if (!data->getValue(EXCITER_VOS,&rval,g_id)) {
00246 data->addValue(EXCITER_VOS,
00247 atof(split_line[4].c_str()), g_id);
00248 } else {
00249 data->setValue(EXCITER_VOS,
00250 atof(split_line[4].c_str()), g_id);
00251 }
00252 }
00253
00254
00255 if (nstr > 5) {
00256 if (!data->getValue(EXCITER_TR,&rval,g_id)) {
00257 data->addValue(EXCITER_TR,
00258 atof(split_line[5].c_str()), g_id);
00259 } else {
00260 data->setValue(EXCITER_TR,
00261 atof(split_line[5].c_str()), g_id);
00262 }
00263 }
00264
00265
00266 if (nstr > 6) {
00267 if (!data->getValue(EXCITER_VIMAX,&rval,g_id)) {
00268 data->addValue(EXCITER_VIMAX,
00269 atof(split_line[6].c_str()), g_id);
00270 } else {
00271 data->setValue(EXCITER_VIMAX,
00272 atof(split_line[6].c_str()), g_id);
00273 }
00274 }
00275
00276
00277 if (nstr > 7) {
00278 if (!data->getValue(EXCITER_VIMIN,&rval,g_id)) {
00279 data->addValue(EXCITER_VIMIN,
00280 atof(split_line[7].c_str()), g_id);
00281 } else {
00282 data->setValue(EXCITER_VIMIN,
00283 atof(split_line[7].c_str()), g_id);
00284 }
00285 }
00286
00287
00288 if (nstr > 8) {
00289 if (!data->getValue(EXCITER_TC,&rval,g_id)) {
00290 data->addValue(EXCITER_TC,
00291 atof(split_line[8].c_str()), g_id);
00292 } else {
00293 data->setValue(EXCITER_TC,
00294 atof(split_line[8].c_str()), g_id);
00295 }
00296 }
00297
00298
00299 if (nstr > 9) {
00300 if (!data->getValue(EXCITER_TB,&rval,g_id)) {
00301 data->addValue(EXCITER_TB,
00302 atof(split_line[9].c_str()), g_id);
00303 } else {
00304 data->setValue(EXCITER_TB,
00305 atof(split_line[9].c_str()), g_id);
00306 }
00307 }
00308
00309
00310 if (nstr > 10) {
00311 if (!data->getValue(EXCITER_TC1,&rval,g_id)) {
00312 data->addValue(EXCITER_TC1,
00313 atof(split_line[10].c_str()), g_id);
00314 } else {
00315 data->setValue(EXCITER_TC1,
00316 atof(split_line[10].c_str()), g_id);
00317 }
00318 }
00319
00320
00321 if (nstr > 11) {
00322 if (!data->getValue(EXCITER_TB1,&rval,g_id)) {
00323 data->addValue(EXCITER_TB1,
00324 atof(split_line[11].c_str()), g_id);
00325 } else {
00326 data->setValue(EXCITER_TB1,
00327 atof(split_line[11].c_str()), g_id);
00328 }
00329 }
00330
00331
00332 if (nstr > 12) {
00333 if (!data->getValue(EXCITER_KA,&rval,g_id)) {
00334 data->addValue(EXCITER_KA,
00335 atof(split_line[12].c_str()), g_id);
00336 } else {
00337 data->setValue(EXCITER_KA,
00338 atof(split_line[12].c_str()), g_id);
00339 }
00340 }
00341
00342
00343 if (nstr > 13) {
00344 if (!data->getValue(EXCITER_TA,&rval,g_id)) {
00345 data->addValue(EXCITER_TA,
00346 atof(split_line[13].c_str()), g_id);
00347 } else {
00348 data->setValue(EXCITER_TA,
00349 atof(split_line[13].c_str()), g_id);
00350 }
00351 }
00352
00353
00354 if (nstr > 14) {
00355 if (!data->getValue(EXCITER_VAMAX,&rval,g_id)) {
00356 data->addValue(EXCITER_VAMAX,
00357 atof(split_line[14].c_str()), g_id);
00358 } else {
00359 data->setValue(EXCITER_VAMAX,
00360 atof(split_line[14].c_str()), g_id);
00361 }
00362 }
00363
00364
00365 if (nstr > 15) {
00366 if (!data->getValue(EXCITER_VAMIN,&rval,g_id)) {
00367 data->addValue(EXCITER_VAMIN,
00368 atof(split_line[15].c_str()), g_id);
00369 } else {
00370 data->setValue(EXCITER_VAMIN,
00371 atof(split_line[15].c_str()), g_id);
00372 }
00373 }
00374
00375
00376 if (nstr > 16) {
00377 if (!data->getValue(EXCITER_VRMAX,&rval,g_id)) {
00378 data->addValue(EXCITER_VRMAX,
00379 atof(split_line[16].c_str()), g_id);
00380 } else {
00381 data->setValue(EXCITER_VRMAX,
00382 atof(split_line[16].c_str()), g_id);
00383 }
00384 }
00385
00386
00387 if (nstr > 17) {
00388 if (!data->getValue(EXCITER_VRMAX,&rval,g_id)) {
00389 data->addValue(EXCITER_VRMAX,
00390 atof(split_line[17].c_str()), g_id);
00391 } else {
00392 data->setValue(EXCITER_VRMAX,
00393 atof(split_line[17].c_str()), g_id);
00394 }
00395 }
00396
00397
00398 if (nstr > 18) {
00399 if (!data->getValue(EXCITER_KC,&rval,g_id)) {
00400 data->addValue(EXCITER_KC,
00401 atof(split_line[18].c_str()), g_id);
00402 } else {
00403 data->setValue(EXCITER_KC,
00404 atof(split_line[18].c_str()), g_id);
00405 }
00406 }
00407
00408
00409 if (nstr > 19) {
00410 if (!data->getValue(EXCITER_KF,&rval,g_id)) {
00411 data->addValue(EXCITER_KF,
00412 atof(split_line[19].c_str()), g_id);
00413 } else {
00414 data->setValue(EXCITER_KF,
00415 atof(split_line[19].c_str()), g_id);
00416 }
00417 }
00418
00419
00420 if (nstr > 20) {
00421 if (!data->getValue(EXCITER_TF,&rval,g_id)) {
00422 data->addValue(EXCITER_TF,
00423 atof(split_line[20].c_str()), g_id);
00424 } else {
00425 data->setValue(EXCITER_TF,
00426 atof(split_line[20].c_str()), g_id);
00427 }
00428 }
00429
00430
00431 if (nstr > 21) {
00432 if (!data->getValue(EXCITER_KLR,&rval,g_id)) {
00433 data->addValue(EXCITER_KLR,
00434 atof(split_line[21].c_str()), g_id);
00435 } else {
00436 data->setValue(EXCITER_KLR,
00437 atof(split_line[21].c_str()), g_id);
00438 }
00439 }
00440
00441
00442 if (nstr > 22) {
00443 if (!data->getValue(EXCITER_ILR,&rval,g_id)) {
00444 data->addValue(EXCITER_ILR,
00445 atof(split_line[22].c_str()), g_id);
00446 } else {
00447 data->setValue(EXCITER_ILR,
00448 atof(split_line[22].c_str()), g_id);
00449 }
00450 }
00451 }
00452
00453
00454
00455
00456
00457
00458 void store(std::vector<std::string> &split_line,_data_struct &data)
00459 {
00460
00461 int o_idx;
00462 o_idx = atoi(split_line[0].c_str());
00463 data.bus_id = o_idx;
00464
00465
00466 gridpack::utility::StringUtils util;
00467 std::string tag = util.clean2Char(split_line[2]);
00468 strcpy(data.gen_id, tag.c_str());
00469
00470 std::string sval;
00471
00472 sval = util.trimQuotes(split_line[1]);
00473 util.toUpper(sval);
00474
00475
00476 strcpy(data.model, sval.c_str());
00477 int nstr = split_line.size();
00478
00479
00480 if (nstr > 3) {
00481 data.uel = atof(split_line[3].c_str());
00482 }
00483
00484
00485 if (nstr > 4) {
00486 data.vos = atof(split_line[4].c_str());
00487 }
00488
00489
00490 if (nstr > 5) {
00491 data.ex_tr = atof(split_line[5].c_str());
00492 }
00493
00494
00495 if (nstr > 6) {
00496 data.vimax = atof(split_line[6].c_str());
00497 }
00498
00499
00500 if (nstr > 7) {
00501 data.vimin = atof(split_line[7].c_str());
00502 }
00503
00504
00505 if (nstr > 8) {
00506 data.ex_tc = atof(split_line[8].c_str());
00507 }
00508
00509
00510 if (nstr > 9) {
00511 data.ex_tb = atof(split_line[9].c_str());
00512 }
00513
00514
00515 if (nstr > 10) {
00516 data.tc1 = atof(split_line[10].c_str());
00517 }
00518
00519
00520 if (nstr > 11) {
00521 data.tb1 = atof(split_line[11].c_str());
00522 }
00523
00524
00525 if (nstr > 12) {
00526 data.ex_ka = atof(split_line[12].c_str());
00527 }
00528
00529
00530 if (nstr > 13) {
00531 data.ex_ta = atof(split_line[13].c_str());
00532 }
00533
00534
00535 if (nstr > 14) {
00536 data.vamax = atof(split_line[14].c_str());
00537 }
00538
00539
00540 if (nstr > 15) {
00541 data.vamin = atof(split_line[15].c_str());
00542 }
00543
00544
00545 if (nstr > 16) {
00546 data.vrmax = atof(split_line[16].c_str());
00547 }
00548
00549
00550 if (nstr > 17) {
00551 data.vrmin = atof(split_line[17].c_str());
00552 }
00553
00554
00555 if (nstr > 18) {
00556 data.ex_kc = atof(split_line[18].c_str());
00557 }
00558
00559
00560 if (nstr > 19) {
00561 data.ex_kf = atof(split_line[19].c_str());
00562 }
00563
00564
00565 if (nstr > 20) {
00566 data.ex_tf = atof(split_line[20].c_str());
00567 }
00568
00569
00570 if (nstr > 21) {
00571 data.klr = atof(split_line[21].c_str());
00572 }
00573
00574
00575 if (nstr > 22) {
00576 data.ilr = atof(split_line[22].c_str());
00577 }
00578 }
00579 };
00580 }
00581 }
00582 #endif